Make the library thread-safe, allowing concurrent connections. Fixes #4#5
Closed
dylanahsmith wants to merge 2 commits into
Closed
Make the library thread-safe, allowing concurrent connections. Fixes #4#5dylanahsmith wants to merge 2 commits into
dylanahsmith wants to merge 2 commits into
Conversation
…hopify#4 Thread-local storage is used to store the connection and variables used to set up the connection object. This allows multiple threads to concurrently make API requests for different shops. The user, password, site and timeout properties are used to change their respective thread-local variables, but they will also set the class variables _user, _password, _site and _timeout remain for backwards compatibility. These class variables are used as default values when the thread-local value has not been set, allowing the main thread to set up these default values before creating other threads. All thread-local values are set as soon as the connection object is created in a thread, through the connection property, to avoid further interference between threads. The _format variable was not make thread-local in the same way because currently only XML is supported, and the ActiveResource class in pyactiveresource accesses cls._format in a few places where it should refer to the cls.format property. This makes localizing it more difficult until pyactiveresource is fixed.
|
Oh this is awesome! Can now use CherryPy :D |
|
👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
@csaunders for review
Thread-local storage is used to store the connection and variables used to
set up the connection object. This allows multiple threads to concurrently
make API requests for different shops.
The user, password, site and timeout properties are used to change
their respective thread-local variables, but they will also set the
class variables _user, _password, _site and _timeout remain for
backwards compatibility. These class variables are used as default
values when the thread-local value has not been set, allowing the
main thread to set up these default values before creating other
threads. All thread-local values are set as soon as the connection object
is created in a thread, through the connection property, to avoid
further interference between threads.
The _format variable was not make thread-local in the same way because
currently only XML is supported, and the ActiveResource class in
pyactiveresource accesses cls._format in a few places where it
should refer to the cls.format property. This makes localizing it
more difficult until pyactiveresource is fixed.